home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Languages / MS Cobol4.5 / DEMO / ASMDEMO / ADDEM.ASM < prev    next >
Assembly Source File  |  1991-04-08  |  1KB  |  60 lines

  1. ;
  2. ;                   (C) Micro Focus Ltd, 1989
  3. ;
  4. ;    This routine is called by the cobol program ADD.CBL
  5. ;    To assemble and link the routine to a .EXE file simply type:
  6. ;
  7. ;            MASM ADDEM;
  8. ;            LINK ADDEM;
  9. ;
  10. public     addem            ;module id
  11.  
  12. cseg     segment para public 'CODE'
  13. assume     cs:cseg
  14.  
  15. first_param  equ dword ptr [bp+6]       ;pointer to first parameter
  16. second_param equ dword ptr [bp+10]      ;pointer to second parameter
  17. res_ult      equ dword ptr [bp+14]      ;pointer to third parameter
  18.  
  19. addem proc far
  20.      push     bp             ;preserve bp
  21.     mov     bp,sp          ;put current stack pointer in bp
  22.      push     ds             ;preserve ds,si,di,flags
  23.      push     si
  24.      push     di
  25.      pushf
  26.  
  27.     mov     ax,dseg        ;initialize ds
  28.     mov     ds,ax
  29.  
  30.     ;      THE NEXT 6 STATEMENTS ARE THE VARIABLE PART
  31.     ;      OF THIS ROUTINE.  MOST EVERYTHING ELSE IS NEEDED
  32.     ;      FOR EVERY ASSEMBLER ROUTINE CALLED BY COBOL.
  33.     les      di,first_param    ;get address of first parameter
  34.     mov     al,es:[di]    ;get value of first parameter
  35.     les     di,second_param    ;get address of second parameter
  36.     add     al,es:[di]    ;add value of 2nd param to first
  37.  
  38.     les     di,res_ult    ;get address of res_ult
  39.     stosb            ;return result to cobol program
  40.  
  41.     xor    ax,ax        ;set return code, 0 in ax = success
  42.  
  43.      popf            ;restore registers
  44.      pop di
  45.      pop si
  46.      pop ds
  47.      pop bp
  48.  
  49.     ret            ;far return
  50. addem    endp
  51. cseg    ends
  52.  
  53. dseg     segment para public 'DATA'
  54.     your_data    db    'data'
  55.     ;    INCLUDE YOUR DATA HERE
  56. dseg     ends
  57.  
  58. end
  59.  
  60.